<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    // 防抖：打断了又重新计时，和王者的回城一样 ===》 多次执行变为最后一次执行
    // 节流：无敌版的回城，一段时间内，只能回城一次，无法被打断 ===》多次执行变为每隔一段时间执行
    // 有没有哪些场景必须用防抖，哪些场景必须用节流？
    // 百度搜索必须用防抖，连续不断输入的时候就不应该调接口，按钮频繁的点击，用防抖；
    // 虚拟滚动用防抖？
    // dom的拖拽用防抖还是用节流呢？

    function debounce (fn, delay) {
      // let that = this
      let timer = null
      return function (...args) {
        let that = this
        clearInterval(timer)
        timer = setTimeout(function () {
          fn.apply(that, args)
        }, delay)
      }
    }
    
  </script>
</body>
</html>